home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-20 / antcal.zip / ANTENNA.BAS < prev    next >
BASIC Source File  |  1991-09-27  |  11KB  |  261 lines

  1. 10 CLS : COLOR 14, 0
  2.    LOCATE 1, 24: PRINT "ANTENNA CALCULATIONS LIBRARY": COLOR 12, 0
  3.    LOCATE 2, 15: PRINT "COMBINED PROGRAMS AND CODE FROM N3CHT AND K1TKL"
  4.    COLOR 11, 0
  5.    LOCATE 3, 18: PRINT "Modified by Mark Camp, KE0KO     09/27/91"
  6.    LOCATE 6, 1: COLOR 15, 0
  7.    PRINT "CALCULATIONS ARE AVAILABLE FOR THE FOLLOWING ANTENNA TYPES:"
  8.    PRINT
  9.    COLOR 15, 0: PRINT TAB(10); "1."; : COLOR 10, 0: PRINT "  HALF WAVE DIPOLE"
  10.     COLOR 14, 0: PRINT TAB(10); "2."; : COLOR 10, 0: PRINT "  THREE ELEMENT YAGI"
  11.     COLOR 13, 0: PRINT TAB(10); "3."; : COLOR 10, 0: PRINT "  INVERTED VEE"
  12.     COLOR 12, 0: PRINT TAB(10); "4."; : COLOR 10, 0: PRINT "  FULL WAVE LOOP"
  13.     COLOR 11, 0: PRINT TAB(10); "5."; : COLOR 10, 0: PRINT "  VERTICAL"
  14.     COLOR 15, 0: PRINT TAB(10); "6."; : COLOR 10, 0: PRINT "  QUAD"
  15.     COLOR 14, 0: PRINT TAB(10); "7."; : COLOR 10, 0: PRINT "  DELTA LOOP"
  16.     PRINT : COLOR 27, 0: PRINT TAB(10); "9"; : COLOR 11, 0: PRINT "."; : COLOR 14, 0: PRINT "  EXIT TO SYSTEM"
  17. 170 LOCATE 20, 1
  18.     PRINT "ENTER THE NUMBER OF THE ANTENNA TYPE YOU DESIRE:  "; : COLOR 15, 0
  19.     S$ = INKEY$: IF S$ = "" GOTO 170
  20.     ON INSTR("12345679", S$) GOSUB 220, 370, 720, 1000, 1200, 1840, 1390, 2590
  21.     GOTO 10
  22. 220 CLS : COLOR 11, 0
  23.     PRINT "***** N3CHT - HALF WAVE DIPOLE DESIGN *****"
  24.     COLOR 10, 0: LOCATE 3, 42: FOR AB = 1 TO 7: PRINT CHR$(177): LOCATE 3, 42 + AB: NEXT
  25.     LOCATE 3, 1: INPUT "INPUT DESIRED CENTER FREQUENCY IN MHZ.:  ", F
  26.     COLOR 14, 0: PRINT
  27.     L = 468 / F
  28.     GOSUB 1780
  29.     PRINT USING "NECESSARY DIPOLE LENGTH IS:  ###.## FEET, ###.## INCHES"; L; I
  30.     L = (468 / F) / 2
  31.     GOSUB 1780
  32.     PRINT
  33.     PRINT USING "ONE ARM IS:  ###.## FEET, ###.## INCHES"; L; I
  34.     GOSUB 2550
  35.     ON INSTR("YyNn", R$) GOTO 220, 220, 10, 10
  36.     CLS : RETURN
  37. 370 CLS : COLOR 11, 0
  38.     PRINT "***** N3CHT - THREE ELEMENT YAGI DESIGN *****"
  39.     COLOR 10, 0: PRINT
  40.     COLOR 10, 0: LOCATE 3, 42: FOR AB = 1 TO 7: PRINT CHR$(177): LOCATE 3, 42 + AB: NEXT
  41.     LOCATE 3, 1: INPUT "INPUT DESIRED CENTER FREQUENCY IN MHZ.:  ", F
  42.     COLOR 14, 0: PRINT
  43.     L = 476 / F
  44.     GOSUB 1780
  45.     PRINT USING "DRIVEN ELEMENT LENGTH IS:  ###.## FEET, ###.## INCHES"; L; I
  46.     PRINT
  47.     L = 501 / F
  48.     GOSUB 1780
  49.     PRINT USING "REFLECTOR LENGTH IS:  ###.## FEET, ###.## INCHES"; L; I
  50.     PRINT
  51.     L = 450 / F
  52.     GOSUB 1780
  53.     PRINT USING "DIRECTOR LENGTH IS:  ###.## FEET, ###.## INCHES"; L; I
  54.     PRINT
  55.     Q = (936 / F) * .15
  56.     I = 12 * Q
  57.     E = SGN(I)
  58.     I = ABS(I)
  59.     Q = INT(I / 12)
  60.     I = (I - 12 * Q) * E
  61.     V = (936 / F) * .2
  62.     J = 12 * V
  63.     E = SGN(J)
  64.     J = ABS(J)
  65.     V = INT(J / 12)
  66.     J = (J - 12 * V) * E
  67.     PRINT USING "ELEMENT SPACING SHOULD BE NO LESS THAN:  ###.## FEET, ###.## INCHES"; L; I
  68.     PRINT USING "AND NO GREATER THAN:  ###.## FEET, ###.## INCHES"; V; J
  69.     GOSUB 2550
  70.     ON INSTR("YyNn", R$) GOTO 370, 370, 10, 10
  71.     CLS : RETURN
  72. 720 CLS : COLOR 11, 0
  73.     PRINT "***** N3CHT - INVERTED VEE DESIGN *****"
  74.     COLOR 10, 0: PRINT
  75.     COLOR 10, 0: LOCATE 3, 42: FOR AB = 1 TO 7: PRINT CHR$(177): LOCATE 3, 42 + AB: NEXT
  76.     LOCATE 3, 1: INPUT "INPUT DESIRED CENTER FREQUENCY IN MHZ.:  ", F
  77. 770 COLOR 12, 0
  78.     COLOR 10, 0: LOCATE 4, 52: FOR AB = 1 TO 2: PRINT CHR$(177): LOCATE 4, 52 + AB: NEXT
  79.     LOCATE 4, 1: INPUT "INPUT THE HIGHEST POINT ON THE ANTENNA (IN FEET):  ", H
  80.     COLOR 14, 0: PRINT
  81.     L = (468 / F) / 2
  82.     G = (L ^ 2) - (H ^ 2)
  83.     IF G < 0 GOTO 840 ELSE GOTO 880
  84. 840 COLOR 15, 0
  85.     PRINT "ERROR - YOU CANNOT HAVE THE HIGHEST POINT THAT HIGH FOR "; F; " MHZ.!"
  86.     PRINT "        RE-ENTER THE HIGHEST POINT."
  87.     GOTO 770
  88. 880 GOSUB 1780
  89.     G = SQR(G)
  90.     D = G * 12
  91.     K = SGN(D)
  92.     D = ABS(D)
  93.     G = INT(D / 12)
  94.     D = (D - 12 * G) * K
  95.     PRINT USING "ONE LEG OF THE INVERTED VEE WILL BE:  ###.## FEET, ###.## INCHES LONG,"; L; I
  96.     PRINT USING "AND WILL TOUCH GROUND:  ###.## FEET, ###.## INCHES FROM THE POLE BASE"; G; D
  97.     GOSUB 2550
  98.     ON INSTR("YyNn", R$) GOTO 720, 720, 10, 10
  99.     CLS : RETURN
  100. 1000 CLS : COLOR 11, 0
  101.      PRINT "***** N3CHT - FULL WAVE LOOP DESIGN *****"
  102.      COLOR 10, 0: PRINT
  103.      COLOR 10, 0: LOCATE 3, 42: FOR AB = 1 TO 7: PRINT CHR$(177): LOCATE 3, 42 + AB: NEXT
  104.      LOCATE 3, 1: INPUT "INPUT DESIRED CENTER FREQUENCY IN MHZ.:  ", F
  105.      COLOR 14, 0: PRINT
  106.      L = 1005 / F
  107.      GOSUB 1780
  108.      PRINT USING "LOOP IS: ###.## FEET, ###.## INCHES IN CIRCUMFERENCE"; L; I
  109.      PRINT
  110.      L = (1005 / F) / 4
  111.      GOSUB 1780
  112.      PRINT USING "4 SIDED LOOP:  ###.## FEET, ###.## INCHES PER SIDE"; L; I
  113.      PRINT
  114.      L = (1005 / F) / 3
  115.      GOSUB 1780
  116.      PRINT USING "3 SIDED LOOP:  ###.## FEET, ###.## INCHES PER SIDE"; L; I
  117.      GOSUB 2550
  118.      ON INSTR("YyNn", R$) GOTO 1000, 1000, 10, 10
  119.      CLS : RETURN
  120. 1200 CLS : COLOR 11, 0
  121.      PRINT "***** N3CHT - VERTICAL DESIGN *****"
  122.      COLOR 10, 0: PRINT
  123.      COLOR 10, 0: LOCATE 3, 42: FOR AB = 1 TO 7: PRINT CHR$(177): LOCATE 3, 42 + AB: NEXT
  124.      LOCATE 3, 1: INPUT "INPUT DESIRED CENTER FREQUENCY IN MHZ.:  ", F
  125.      COLOR 14, 0: PRINT
  126.      L = 234 / F
  127.      R = 240 / F
  128.      GOSUB 1780
  129.      S = 12 * R
  130.      T = SGN(S)
  131.      S = ABS(S)
  132.      R = INT(S / 12)
  133.      S = (S - 12 * R) * T
  134.      PRINT USING "ANTENNA LENGTH IS:  ###.## FEET, ###.## INCHES"; L; I
  135.      PRINT USING "RADIALS ARE:  ###.## FEET, ###.## INCHES "; R; S
  136.      GOSUB 2550
  137.      ON INSTR("YyNn", R$) GOTO 1200, 1200, 10, 10
  138.      CLS : RETURN
  139. 1390 CLS : COLOR 11, 0
  140.      PRINT "***** N3CHT - DELTA LOOP DESIGN *****"
  141.      COLOR 10, 0: PRINT
  142.      COLOR 10, 0: LOCATE 3, 42: FOR AB = 1 TO 7: PRINT CHR$(177): LOCATE 3, 42 + AB: NEXT
  143.      LOCATE 3, 1: INPUT "INPUT DESIRED CENTER FREQUENCY IN MHZ.:  ", F
  144.      COLOR 14, 0: PRINT
  145.      L = 1005 / F
  146.      GOSUB 1780
  147.      PRINT USING "DRIVEN ELEMENT CIRCUMFERENCE IS:  ###.## FEET, ###.## INCHES"; L; I
  148.      PRINT
  149.      L = 1050 / F
  150.      GOSUB 1780
  151.      PRINT USING "REFLECTOR CIRCUMFERENCE IS:  ###.## FEET, ###.## INCHES"; L; I
  152.      PRINT
  153.      L = 968 / F
  154.      GOSUB 1780
  155.      PRINT USING "DIRECTOR CIRCUMFERENCE IS:  ###.## FEET, ###.## INCHES"; L; I
  156.      PRINT
  157.      L = (1005 / F) / 3
  158.      GOSUB 1780
  159.      PRINT USING "DRIVEN ELEMENT SIDE IS:  ###.## FEET, ###.## INCHES"; L; I
  160.      PRINT
  161.      L = (1050 / F) / 3
  162.      GOSUB 1780
  163.      PRINT USING "REFLECTOR SIDE IS:  ###.## FEET, ###.## INCHES"; L; I
  164.      PRINT
  165.      L = (968 / F) / 3
  166.      GOSUB 1780
  167.      PRINT USING "DIRECTOR SIDE IS:  ###.## FEET, ###.## INCHES"; L; I
  168.      PRINT
  169.      L = (1005 / F) * .15
  170.      GOSUB 1780
  171.      PRINT USING "ELEMENT SPACING SHOULD BE NO LESS THAN:  ###.## FEET, ###.## INCHES"; L; I
  172.      L = (1005 / F) * .2
  173.      GOSUB 1780
  174.      PRINT USING "AND NO GREATER THAN:  ###.## FEET, ###.## INCHES"; L; I
  175.      GOSUB 2550
  176.      ON INSTR("YyNn", R$) GOTO 1390, 1390, 10, 10
  177.      CLS : RETURN
  178. 1780 I = 12 * L
  179.      E = SGN(I)
  180.      I = ABS(I)
  181.      L = INT(I / 12)
  182.      I = (I - 12 * L) * E
  183.      RETURN
  184. 1840 REM
  185.      CLS : LOCATE 1, 1: COLOR 11, 0
  186.      PRINT "***** K1TKL - TWO ELEMENT QUAD DESIGN *****": COLOR 14, 0
  187.      LOCATE 10, 1
  188.      PRINT "THE FOLLOWING PROGRAM IS FOR A TWO ELEMENT QUAD WITH A FEED IMPEDANCE"
  189.      PRINT "OF 70 OHMS.  YOU WILL BE ASKED FOR A FREQUENCY IN MHZ.  THE PROGRAM"
  190.      PRINT "WILL PROVIDE DATA DIMENSION OUTPUT IN FEET AND INCHES FOR THE SIDE OF"
  191.      PRINT "THE QUAD, THE TOTAL WIRE LENGTH, THE DIAGONAL MEASUREMENT ALONG THE"
  192.      PRINT "SPIDER OR SUPPORT MEMBER FROM THE BOOM CENTER, FOR THE DRIVEN ELEMENT"
  193.      PRINT "AND THE REFLECTOR.  THE OPTIMUM BOOM LENGTH WILL ALSO BE GIVEN."
  194.      PRINT : INPUT "ENTER <CR> TO CONTINUE", CR$
  195. 1950 CLS
  196.      LOCATE 14, 25: PRINT "For example: 14.025"
  197.      LOCATE 11, 38: FOR AB = 1 TO 7: PRINT CHR$(177): LOCATE 11, 38 + AB: NEXT
  198.      X = 0: LOCATE 10, 1: PRINT : INPUT "WHAT IS THE FREQUENCY TO USE IN MHZ? ", X
  199.      IF X <= 0 THEN BEEP ELSE 2020
  200.      LOCATE 12, 10: PRINT "Error in data entry. Try again...."
  201.      FOR XX = 1 TO 1500: NEXT XX: GOTO 1950
  202. 2020 LR = 258 / X
  203.      WR = 4 * LR
  204.      DR = (LR ^ 2 / 2) ^ .5
  205.      LD = 251 / X
  206.      WD = 4 * LD
  207.      DD = (LD ^ 2 / 2) ^ .5
  208.      SP = 118 / X
  209.      CLS
  210.      PRINT TAB(15); "DESIGN FREQUENCY IS:"; X; "MHZ"
  211.      PRINT : PRINT TAB(20); "REFLECTOR DIMENSIONS"
  212.      PRINT TAB(20); "********************"
  213.      PRINT
  214.      PRINT "SIDE LENGTH OF REFLECTOR IS:  "; USING "### FEET, ##.## INCHES"; FIX(LR); (FIX(100 * (LR - FIX(LR)) * 12)) / 100
  215.      PRINT "TOTAL WIRE LENGTH OF REFL IS: "; USING "### FEET, ##.## INCHES"; FIX(WR); (FIX(100 * (WR - FIX(WR)) * 12)) / 100
  216.      PRINT "DRILL HOLE IN REFL SPIDER AT: "; USING "### FEET, ##.## INCHES"; FIX(DR); (FIX(100 * (DR - FIX(DR)) * 12)) / 100
  217.      PRINT : PRINT
  218.      PRINT TAB(21); "DRIVEN DIMENSIONS"
  219.      PRINT TAB(21); "*****************"
  220.      PRINT
  221.      PRINT "SIDE LENGTH OF DRIVEN IS: "; USING "    ### FEET, ##.## INCHES"; FIX(LD); (FIX(100 * (LD - FIX(LD)) * 12)) / 100
  222.      PRINT "TOTAL WIRE LENGTH OF DRI. IS: "; USING "### FEET, ##.## INCHES"; FIX(WD); (FIX(100 * (WD - FIX(WD)) * 12)) / 100
  223.      PRINT "DRILL HOLE IN DRI. SPIDER AT: "; USING "### FEET, ##.## INCHES"; FIX(DD); (FIX(100 * (DD - FIX(DD)) * 12)) / 100
  224.      PRINT : PRINT
  225.      PRINT TAB(10); "BOOM LENGTH IS: "; USING "### FEET, ##.## INCHES"; FIX(SP); (FIX(100 * (SP - FIX(SP)) * 12)) / 100
  226.      PRINT TAB(10); "**************************************"
  227. 2270 PRINT : A$ = "": PRINT "DO YOU WANT A HARD COPY OUTPUT (Y/N)?"; A$
  228. 2280 A$ = INKEY$: IF A$ = "" GOTO 2280
  229.      ON INSTR("YyNn", A$) GOTO 2320, 2320, 2310, 2310
  230.      PRINT "INVALID ENTRY, TRY AGAIN.": BEEP: GOTO 2270
  231. 2310 CLS : GOTO 2500
  232. 2320 LPRINT "THE FREQUENCY IN MHZ IS:"; USING "###.###"; X
  233.      LPRINT : LPRINT
  234.      LPRINT TAB(20); "REFLECTOR DIMENSIONS"
  235.      LPRINT TAB(20); "********************"
  236.      LPRINT
  237.      LPRINT "SIDE LENGTH OF REFLECTOR IS:  "; USING "### FEET, ##.## INCHES"; FIX(LR); (FIX(100 * (LR - FIX(LR)) * 12)) / 100
  238.      LPRINT "TOTAL WIRE LENGTH OF REFL IS: "; USING "### FEET, ##.## INCHES"; FIX(WR); (FIX(100 * (WR - FIX(WR)) * 12)) / 100
  239.      LPRINT "DRILL HOLE IN REFL SPIDER AT: "; USING "### FEET, ##.## INCHES"; FIX(DR); (FIX(100 * (DR - FIX(DR)) * 12)) / 100
  240.      LPRINT : LPRINT
  241.      LPRINT TAB(21); "DRIVEN DIMENSIONS"
  242.      LPRINT TAB(21); "*****************"
  243.      LPRINT
  244.      LPRINT "SIDE LENGTH OF DRIVEN IS: "; USING "    ### FEET, ##.## INCHES"; FIX(LD); (FIX(100 * (LD - FIX(LD)) * 12)) / 100
  245.      LPRINT "TOTAL WIRE LENGTH OF DRI. IS: "; USING "### FEET, ##.## INCHES"; FIX(WD); (FIX(100 * (WD - FIX(WD)) * 12)) / 100
  246.      LPRINT "DRILL HOLE IN DRI. SPIDER AT: "; USING "### FEET, ##.## INCHES"; FIX(DD); (FIX(100 * (DD - FIX(DD)) * 12)) / 100
  247.      LPRINT : LPRINT
  248.      LPRINT TAB(10); "BOOM LENGTH IS: "; USING "### FEET, ##.## INCHES"; FIX(SP); (FIX(100 * (SP - FIX(SP)) * 12)) / 100
  249.      LPRINT TAB(10); "**************************************"
  250. 2500 CLS : A$ = ""
  251. 2510 LOCATE 20, 15: PRINT "Do you want to rerun the program (Y/N)?"; A$
  252.      A$ = INKEY$: IF A$ = "" GOTO 2510
  253.      ON INSTR("YyNn", A$) GOTO 1950, 1950, 10, 10
  254.      GOTO 10
  255. 2550 REM
  256. 2560 LOCATE 22, 5: COLOR 13, 0: PRINT "WANT TO TRY ANOTHER FREQUENCY (Y OR N)?  "
  257.      R$ = INKEY$: IF R$ = "" GOTO 2560
  258.      RETURN
  259. 2590 CLS : SYSTEM
  260.  
  261.